// 实现Jwt

const sesstionUtil = {
  // 存储 sesstion
  set: (key, value, delay) => {
    //默认sesstion为七天之后过期
    if (delay == undefined || (!isNaN(delay) && delay % 1 === 0)) delay = 7;

    // 获取当前时间戳
    let timeStamp = Date.parse(new Date());

    let sessionOutTime = timeStamp + delay * 1000 * 60 * 60 * 24;

    // 如果value 是对象 将其转换成字符串
    if (typeof value == "object") {
      value = JSON.stringify(value);
    }
    value = escape(value);
    // 存储对象字符
    window.localStorage.setItem(key, value);
    // 存储过期时间
    window.localStorage.setItem(sessionOutTime, sessionOutTime);
  },
  //   获取 sesstion
  get: (key) => {
    if (typeof key === "undefined") {
      return false;
    }

    // 获取当前时间戳
    let timeStamp = Date.parse(new Date());

    let sessionOutTime = window.localStorage.getItem("sessionOutTime");

    // 如果过期了，或者sessionOutTime 不存在 移除该key 与 过期时间
    if (timeStamp > sessionOutTime || !sessionOutTime) {
      window.localStorage.removeItem("sessionOutTime");
      return false;
    }

    return window.localStorage.getItem(key);
  },

  //   移除指定key
  remove: (key) => {
    window.localStorage.removeItem(key);
  },

  //   刷新sesstion
  refresh: (key) => {
    // 获取当前的key
    let token = window.localStorage.getItem(key);
    // 网络请求将旧token  传入  获取到新token 然后调用set 方法
  },
};

// 疑问解答一：如何保证Jwt 一直运转  在vuex 的 getter 方法里使用 它是实时运行的，当发现返回值不等同于意愿，移除token 返回登录页就行
// 疑问解答二：单单使用getter 是不够的， 在vue-touter 的路由守卫里 一样使用 ，当发现 token 不存在的时候  返回登录页
